Repository navigation
fix(release): qualify 2.3.0 original-context and Turn boundaries - #8356
loopx-agent wants to merge 52 commits into
Conversation
…overy Signed-off-by: LoopX Agent <337587101+loopx-agent@users.noreply.github.com>
Signed-off-by: LoopX Agent <337587101+loopx-agent@users.noreply.github.com>
Signed-off-by: LoopX Agent <337587101+loopx-agent@users.noreply.github.com>
Signed-off-by: LoopX Agent <337587101+loopx-agent@users.noreply.github.com>
Signed-off-by: LoopX Agent <337587101+loopx-agent@users.noreply.github.com>
Signed-off-by: LoopX Agent <337587101+loopx-agent@users.noreply.github.com>
Signed-off-by: LoopX Agent <337587101+loopx-agent@users.noreply.github.com>
Keep main's stateless first-read, capture-bound claim recovery, and settlement presentation. Validate the complete source before using the shared projection and preserve its original reader. Signed-off-by: LoopX Agent <337587101+loopx-agent@users.noreply.github.com>
Declare the adapter's supported wire version before a new invocation. Use the shared complete request renderer and result fields for TraeX. Keep v0 journal recovery and the original capture identity in the process interruption tests. Signed-off-by: LoopX Agent <337587101+loopx-agent@users.noreply.github.com>
Signed-off-by: LoopX Agent <337587101+loopx-agent@users.noreply.github.com>
…r-20261107 Signed-off-by: LoopX Agent <337587101+loopx-agent@users.noreply.github.com> # Conflicts: # loopx/capabilities/native_chat/steward_turn.py # loopx/cli_commands/quota_capture.py # loopx/cli_commands/turn.py # loopx/control_plane/quota/turn_envelope.py # loopx/control_plane/quota/turn_envelope.ts # loopx/control_plane/turn_driver/decision_capture.py
Signed-off-by: LoopX Agent <337587101+loopx-agent@users.noreply.github.com>
Signed-off-by: LoopX Agent <337587101+loopx-agent@users.noreply.github.com>
Signed-off-by: LoopX Agent <337587101+loopx-agent@users.noreply.github.com>
Signed-off-by: LoopX Agent <337587101+loopx-agent@users.noreply.github.com>
Signed-off-by: LoopX Agent <337587101+loopx-agent@users.noreply.github.com>
Signed-off-by: LoopX Agent <337587101+loopx-agent@users.noreply.github.com> # Conflicts: # skills/loopx-self-repair/references/repair-patterns.md
Signed-off-by: LoopX Agent <337587101+loopx-agent@users.noreply.github.com>
Signed-off-by: LoopX Agent <337587101+loopx-agent@users.noreply.github.com>
Signed-off-by: LoopX Agent <337587101+loopx-agent@users.noreply.github.com>
Signed-off-by: LoopX Agent <337587101+loopx-agent@users.noreply.github.com>
…reads Signed-off-by: LoopX Agent <337587101+loopx-agent@users.noreply.github.com>
Signed-off-by: LoopX Agent <337587101+loopx-agent@users.noreply.github.com>
Signed-off-by: LoopX Agent <337587101+loopx-agent@users.noreply.github.com>
Signed-off-by: LoopX Agent <337587101+loopx-agent@users.noreply.github.com>
Signed-off-by: LoopX Agent <337587101+loopx-agent@users.noreply.github.com>
…d-20261108 Resume verified conversation history after transport interruptions
…e-20261107 Merge the reviewed complete-source Turn prerequisite and its downstream consumer/recovery repairs. Exact reviewed head: 5bd42ed Review: #8211 (review) Signed-off-by: LoopX Agent <337587101+loopx-agent@users.noreply.github.com>
Signed-off-by: LoopX Agent <337587101+loopx-agent@users.noreply.github.com>
Signed-off-by: LoopX Agent <337587101+loopx-agent@users.noreply.github.com>
…0261108 perf(chat): avoid off-page result reads during legacy history fallback
…budget Signed-off-by: LoopX Agent <337587101+loopx-agent@users.noreply.github.com>
Signed-off-by: LoopX Agent <337587101+loopx-agent@users.noreply.github.com>
…ng owners Signed-off-by: LoopX Agent <337587101+loopx-agent@users.noreply.github.com>
… guidance Signed-off-by: LoopX Agent <337587101+loopx-agent@users.noreply.github.com>
…ity attribution Signed-off-by: LoopX Agent <337587101+loopx-agent@users.noreply.github.com>
Signed-off-by: LoopX Agent <337587101+loopx-agent@users.noreply.github.com>
Signed-off-by: LoopX Agent <337587101+loopx-agent@users.noreply.github.com>
…261108-082941 fix(workspace): show complete original Task evidence and notes
Signed-off-by: LoopX Agent <337587101+loopx-agent@users.noreply.github.com>
…rrative-reuse-20261108 Reuse already-read Goal narrative in progressive first reads
…n main Signed-off-by: LoopX Agent <337587101+loopx-agent@users.noreply.github.com>
loopx-agent
left a comment
There was a problem hiding this comment.
Reviewer: model_agent, gpt-6.1-sol, OpenAI, runtime_reported, reasoning_effort=max
Approval conclusion (author-owned PR; GitHub blocks formal self-approval)
动机 / Motivation
需要在原 Turn 内修正草稿、读取完整上下文并完成原结算的 Agent,以及核对发布候选证据的维护者。旧 qualification Host 把尚未创建的工作区内草稿直接当作越界,并在只影响草稿的 shell 失败后终止,无法按真实 CLI 错误在原预算中改正;短标量数组的地址投影还会比原文更大。这会让原本可以修正的一次输入失误变成整轮中断,或使“缩小传输”反而增加成本。当前 head 在原 10 次调用预算内完成缺失草稿和一次 shell 错误后的纠正,保留 proof/registry 不变、原身份及一次 writeback/spend;选择器返回原值和原 digest。这是一项可独立核验的恢复与资格夹具增量,不执行或批准正式 benchmark,不授予发布、安装或合并权限,也不把尚未完成的全量发布资格写成通过。完整 pytest、full-public、最终安装与发布资格仍由发布维护者完成;已报告的全量 pytest 两项失败尚无最终 trace,继续保持发布门。因此这个增量有实际可用结果,完整发布门仍单独持有。
改动思路 / Approach
保留原生 CLI、TypeScript 选择器和既有结算所有者的权威;Host 只恢复无受保护改写的草稿失败,浏览器 checkpoint 只是经当前来源重验的派生缓存,四个组合函数移动到现有 owner 后函数体保持等价。本 PR 的边界是原预算内可纠正的恢复、完整值与调用身份不丢失,以及透明的发布说明;不以夹具修正或单臂通过代替整个 2.3.0 发布验收。草稿路径先解析到工作区内,再让真实 CLI 返回缺失文件错误。非零 shell 退出只有在 scratch 以外的 fixture 完全不变时才能送回模型修正;protected proof 或 registry 被改写仍立即停止。错误修正消耗原调用数,不重新准入、不重置预算,也不自动修复错误模型结果。
地址投影只向既有 TypeScript planner 提供形状和数组长度,标量改用一字节占位;最终类型、精度、字节数和选中值仍由 digest 核验过的原文件 renderer 提供。主干中已合并的 #8355 作为前置保留:浏览器失败页沿原 cursor 继续,但在来源撤销、身份变化或非法 prefix 时丢弃 checkpoint;不把局部历史发布成完整回答,不启动新 Turn。
具体改动 / Changes
完整检查 packet base efd49352cc087cb299d5f7194cefd95a64b83e95 到本 head 的 29 文件 +897/-232;其中 8 个 history-recovery 路径属于已合并 #8355 前置,相对该集成点的独立增量是 21 文件 +733/-221。也读取了最新 main fe36f31f 对三个重叠文件的完整差异:complete-Turn 和 Goal-narrative 恢复必须在后续集成时保留;当前审查不认证尚不存在的新集成 head。
规范依据是改动前 docs/development/testing-and-quality.md(revision efd49352cc087cb299d5f7194cefd95a64b83e95)的预算与真实路径规则,以及发布说明合同。criterion bounded-recovery、original-context-values、original-settlement、release-body-contract 均 implemented;final-release-qualification 明确 deferred 给发布维护者,不能随此代码结论解除。
关键代码讲解
_execute_terminal_workspace在错误后比较 scratch 外快照;只有受保护状态不变才返回限长shell_nonzero诊断。原 10-call 限制、proof 独立校验和结算顺序仍有效。context_selection_transport生成地址骨架;真正输出仍经context_selection_view读原值并验 digest,没有把占位零当作用户数据。readChatSessionHistory与其 fresh-source 调用者保存不可变 prefix 副本,仅重试失败页;pendingReads 是浏览器内存,不是来源权威或持久工作状态。settle_requested_refresh仍只在显式 settle-turn 下组合原结算。该函数及三个 reader helper 的 base/head AST(忽略 import/docstring)相同,退出、异常和已提交回执不重入语义未变。
同一 480 个混合标量输入为 2412 bytes:旧 planner 传输 2892 bytes,本 head 1452 bytes;原值、非 JS-safe 整数和索引元数据仍从原 capture 返回。辅助 monitor 的完整 writeback 在 File、SQLite 都为 8642 字符,immutable base 的 7500 上限实际失败并保留;只把此回归预算校准到 9336,保留 694 余量。head 测试对完整 Vision authoring 与原 semantic-closeout 参数逐项相等,spend/settled 的 2000 上限未改。Lark private_conversations 的 2012 行 baseline 记录的是 base/head 同一 blob 的已有开销,没有隐藏本 PR 的新增源代码增长;CLI 两个超限组合入口通过现有 owner 提取降到 995 和 978 行。
对主干的风险 / Risks
未发现本 head 的新阻断 finding。最强负例是“失败命令已经改写 proof/registry 却继续 spend”,以及“来源撤销后沿缓存 prefix 显示旧记录”。本次实际执行 4 个恢复/context/actor 模块 86 PASS,包含路径与 symlink 越界、受保护改写停止、缺失草稿后原 CLI 拒绝与同预算纠正、12k 分页耗尽原预算和 64k 完整选中内容相等。错误 reason_codes 仍只调用 provider 一次并由严格结果 validator 拒绝,不自动重试或改写答案。
5 个真实 CLI/File/SQLite/Explore/Host 模块第一轮 30 PASS / 1 FAIL / 3 ERROR,日志明确出现 ENOSPC,包括失败用例的 teardown;这些结果保留。磁盘恢复后只重跑三个受影响/未完成用例为 3 PASS,并对原 SQLite-evidence 用例追加三次固定环境检查,三次均 PASS(2.80/2.65/2.34 秒,磁盘始终约 19 GiB 可用),未删除断言。原 CLI 失败的完整原因未从截断 assertion 还原,不能凭后续成功宣称历史失败已修复;当前变更由完整 owner 函数等价、两 provider 原身份读回与受保护状态负例交叉覆盖。
构建当前 Chat bundle 后,production HTTP/SQLite/Core smoke 的普通绑定与管家 fallback 两路均 PASS;source revocation、403、identity/digest 冲突、只读和旧服务拒绝都有检查。用相同新 fixture 挑战 immutable base,重复中断需要 0,200,0,200,400,0,200,400 八次读取;head 为 0,200,200,400,400 五次,并返回同一完整原文、无新增 Session/Turn。初次未构建 bundle 的 fixture 前置失败保留,不计产品失败或成功。
本地 premerge 6 direct / 19 selected 全部 PASS,仍有 4 manual holds;mypy 17 个目标、Ruff、包含 tsc 的 packaged build 和公开边界检查 PASS。15 个可选能力的完整双语 usage gate PASS;18 个 handle、84 个 PR 的作者/merged 状态及 v2.2.0→本 head 的 Git 归属独立核验,双语名单相等。失联的历史 #7545 不能从显示名补造 PR 元数据,保留独立归属缺口。
另读取作者执行的 actual-default Pro compact receipt:22 场景各 2 次、44 actor invocations、113 provider requests、6 contrasts,failure/skip 均为 0,source commit/tree/clean/version 与本 head 一致,且 automatic promotion=false。这是作者运行、独立读回的证据,不是 reviewer 新执行的模型实验;旧 EV 失败和第一次调用前中止仍未改名为 PASS。未查询、轮询或等待 CI,也未运行新的付费模型。
我的整体评价 / Verdict
保留原生 CLI、TypeScript 选择器和既有结算所有者的权威;Host 只恢复无受保护改写的草稿失败,浏览器 checkpoint 只是经当前来源重验的派生缓存,四个组合函数移动到现有 owner 后函数体保持等价。本 PR 的边界是原预算内可纠正的恢复、完整值与调用身份不丢失,以及透明的发布说明;不以夹具修正或单臂通过代替整个 2.3.0 发布验收。本地长程恢复得到可观测改善:可纠正的草稿错误不再丢弃已完成工作,重复断网不再从页零反复读取;用户体验也改善,已有意图和权限下无新增确认、复制或准备轮次。模型是否在真实长期任务稳定采纳这些提示仍不作一般性结论。
复用 9b1e524 提交的 packaged Chat 合成截图检查桌面尾部、不可用恢复和 390×844 窄屏;reader、history hook 及相关界面文件在该提交与 3f1cb51 间未变,原始草稿与恢复入口可读。截图不证明已安装 App、真实 IM、模型逐条采纳或长正文的完整视觉可读性;本次没有修改正文布局,完整正文由真实 HTTP 字节断言核对。新增 state/type 和 shell_nonzero 都在各自 caller 的本地派生/诊断边界,复用原有共享词汇与 typed owner,没有新增执行权限。提取组合函数是本次有边界的行为保持整理;不需把未改动的整个 Lark provider 重写作为本 PR 前提。源码增量可接受,但 完整 pytest、full-public、最终安装与发布资格仍由发布维护者完成;已报告的全量 pytest 两项失败尚无最终 trace,继续保持发布门。任何 rebase、release source 或最终 body 改动都需按新身份复核;此结论不授予合并或发布权。
English verdict: APPROVE — bounded recovery and original-context preservation are verified at this exact head; full release qualification and merge authority remain separate holds.
Signed-off-by: LoopX Agent <337587101+loopx-agent@users.noreply.github.com>
…ontent Signed-off-by: LoopX Agent <337587101+loopx-agent@users.noreply.github.com>
Signed-off-by: LoopX Agent <337587101+loopx-agent@users.noreply.github.com>
Signed-off-by: LoopX Agent <337587101+loopx-agent@users.noreply.github.com>
Signed-off-by: LoopX Agent <337587101+loopx-agent@users.noreply.github.com>
Signed-off-by: LoopX Agent <337587101+loopx-agent@users.noreply.github.com>
Signed-off-by: LoopX Agent <337587101+loopx-agent@users.noreply.github.com>
…essure-20261108 fix(chat): retain live work during transient progress storage failure
…lease-2.3.0-opening-repair-20261108 Signed-off-by: LoopX Agent <337587101+loopx-agent@users.noreply.github.com>
Signed-off-by: LoopX Agent <337587101+loopx-agent@users.noreply.github.com>
2.3.0 的发布验证发现了原始上下文读取、Turn 结算和会话意图边界的实际失败。本提案修复这些路径,并把既有回归测试接到当前完整 Host 协议,以便对同一候选提交完成发布资格验证。
当前审查提交:
2941018e47588bddff5613335f26dc317282c93c。验证状态:
需要独立审查的取舍:
chat_agent.py增加两句必要的行为指导,共 2 行、560 bytes;本提案仅将该模块的已评审行数上限从 2043 调整到 2045,其余预算不变。请判断信息价值与维护代价,保留原失败记录。benchmark toolkit README 的风险门人工检查也仍需给出独立结论。完整资格、当前提交的独立审查、未解决讨论清零及合并就绪检查共同决定合并与发布;PR 的准备完成状态不代表发布门已通过。